﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;
using System.IO;

public partial class Protegidos_Pessoas_DadosPessoa__popup_ppAdvertSusp : PageBase
{
    private const string dbPath = "arq/";
    protected int idAdvertencia = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["Id"] != null)
            idAdvertencia = int.Parse(Request.QueryString["Id"].ToString());

        if (!IsPostBack)
        {
            trResultado.Visible = false;
            CarregarTipo(rcbTipo);
            CarregarPessoa(rcbAdvertidoPor);

            if (idAdvertencia != 0)
                CarregaDados();
        }

    }

    #region Eventos
    protected void rcbTipo_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        AjustarCampos();
    }
    protected void btnSalvar_Click(object sender, EventArgs e)
    {
        try
        {
            BindValidResults();
        }
        catch (Exception ex)
        {
            lblResultado.Text = ex.Message;
        }
    }
    protected void btnFechar_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('advert');", true);
    }
    #endregion

    #region Metodos
    private void CarregaDados()
    {
        PessoaAdvertencia advertencia = new PessoaAdvertencia(idAdvertencia);

        rcbTipo.SelectedValue = advertencia.TipoSuspensao.IdTipoSuspensao.ToString();
        rcbAdvertidoPor.SelectedValue = advertencia.AdvertidoPor.IdPessoa.ToString();
        txtDataAdvertencia.SelectedDate = advertencia.DataAdvertencia;
        txtDataInicioSuspensao.SelectedDate = advertencia.DataInicioSuspensao;
        txtDataFimSuspensao.SelectedDate = advertencia.DataFimSuspensao;
        txtDescricao.Text = advertencia.Obs;

        AjustarCampos();
    }
    private void AjustarCampos()
    {
        if (rcbTipo.SelectedValue == "3")
        {
            trDataInicioSuspensao.Visible = true;
            trDataFimSuspensao.Visible = true;
        }
        else
        {
            trDataInicioSuspensao.Visible = false;
            trDataFimSuspensao.Visible = false;
        }
    }
    private void CarregarTipo(RadComboBox combo)
    {
        try
        {
            TipoSuspensao tipoSuspensao = new TipoSuspensao();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoSuspensao";
            combo.DataSource = tipoSuspensao.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarPessoa(RadComboBox combo)
    {
        try
        {
            Pessoa pessoa = new Pessoa();

            combo.DataTextField = "Nome";
            combo.DataValueField = "IdPessoa";
            combo.DataSource = pessoa.SelectPessoaPesquisa("", IdPrestador);
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void InserirSelecione(RadComboBox combo)
    {
        try
        {
            combo.Items.Insert(0, new RadComboBoxItem(" -- Selecione -- ", "0"));
            combo.SelectedIndex = 0;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void BindValidResults()
    {
        string nameFile = Salvar();

        if (RadUpload1.UploadedFiles.Count > 0)
        {

            foreach (UploadedFile validFile in RadUpload1.UploadedFiles)
            {
                string targetFolder = Server.MapPath("~/Arq");
                validFile.SaveAs(Path.Combine(targetFolder, nameFile), true);
            }

            labelNoResults.Visible = false;
            repeaterResults.Visible = true;
            repeaterResults.DataSource = RadUpload1.UploadedFiles;
            repeaterResults.DataBind();
        }
        else
        {
            labelNoResults.Visible = true;
            repeaterResults.Visible = false;
        }

        ExibeResultado();
    }
    protected string Salvar()
    {
        PessoaAdvertencia advertencia = new PessoaAdvertencia();

        advertencia.IdAdvertencia = idAdvertencia;
        if (rcbTipo.SelectedValue != string.Empty)
            advertencia.TipoSuspensao = new TipoSuspensao(int.Parse(rcbTipo.SelectedValue));
        advertencia.Pessoa = new Pessoa(IdPessoa, true);
        if (rcbAdvertidoPor.SelectedValue != string.Empty)
            advertencia.AdvertidoPor = new Pessoa(int.Parse(rcbAdvertidoPor.SelectedValue), true);
        if (txtDataAdvertencia.SelectedDate != null)
            advertencia.DataAdvertencia = DateTime.Parse(txtDataAdvertencia.SelectedDate.ToString());
        if (txtDataInicioSuspensao.SelectedDate != null)
            advertencia.DataInicioSuspensao = DateTime.Parse(txtDataInicioSuspensao.SelectedDate.ToString());
        if (txtDataFimSuspensao.SelectedDate != null)
            advertencia.DataFimSuspensao = DateTime.Parse(txtDataFimSuspensao.SelectedDate.ToString());
        advertencia.Obs = txtDescricao.Text.Trim();
        if ((rcbTipo.SelectedValue == "2") || (rcbTipo.SelectedValue == "3"))
            advertencia.Path = dbPath;

        advertencia.Salvar();

        FileInfo _fileInfo = new FileInfo(advertencia.Path);

        return _fileInfo.Name;
    }
    private void ExibeResultado()
    {
        trSeleciona.Visible = false;
        trResultado.Visible = true;
        trMsg.Visible = false;
        btnSalvar.Visible = false;

        trTipo.Visible = false;
        trAdvertidoPor.Visible = false;
        trDataAdvertencia.Visible = false;
        trDataInicioSuspensao.Visible = false;
        trDataFimSuspensao.Visible = false;
        trDescricao.Visible = false;
        tr1.Visible = false;
        tr3.Visible = false;
    }
    #endregion
}
